 #英雄类序列化器创建，通过模型类的方式创建
from books.models import HeroInfo

from  rest_framework import serializers

#创建序列化器，字段和保存修改方法
class HeroModelSerializer(serializers.ModelSerializer):
    class Meta:
        model = HeroInfo
        fields = '__all__'
# extra_kwargs = {
#'hcomment':{'read_only':True}
#     # }
# id = IntegerField(label='ID', read_only=True)
# hname = CharField(label='名称', max_length=20)
# hgender = ChoiceField(choices=((0, 'male'), (1, 'female')), label='性别', required=False, validators=[<django.core.validators.MinValueValidator object>, <django.core.validators.MaxValueValidator object>])
# hcomment = CharField(allow_null=True, label='描述信息', max_length=200, required=False)
# is_delete = BooleanField(label='逻辑删除', required=False)
# hbook = PrimaryKeyRelatedField(label='图书', queryset=BookInfo.objects.all())
    def validate_hname(self,value):
        if value == '冯亮':
            raise serializers.ValidationError('名称不能为冯亮')
        return value
    #
    # def validate(self, attrs):
    #     pass


    def create(self,validated_data):
        hero = HeroInfo.objects.create(**validated_data)
        return hero
    def update(self, instance, validated_data):
        instance.hname = validated_data['hname']
        instance.hgender = validated_data['hgender']
        instance.hcomment = validated_data['hcomment']
        instance.is_delete = validated_data['is_delete']
        instance.hbook = validated_data['hbook']
        instance.save()
        return instance
#逻辑；第一创建模型化序列化器，确定字段，生成shell ，
 # from hero_drf（视图名）.serializers import 序列化类
 #    serializer = 序列化类（）
 #    sderializer   ----生成字段，2，在序列化器中完成第一验证 保存数据库，修改方法
 #    最后视图中定义一个类继承 ListCreateAPIView  ---一个类RetrieveUpdateDestroyAPIview,子类中封装get post ...请求方式，不需要映射路由
 #    第二种，需要现在路由中映射请求方式，get-retrieve -list  post -creat  .. 继承ModelViewSet
 #        子类中没有封装get ，post...请求方式，需要映射路由，通过路由映射后的请求方式，取调用相应的方法
